$(function (){
	// 初始化部分

	const upload=layui.upload;
	const table=layui.table;
	const form=layui.form;
	// 图标url
	let url;
	// 获取URL中的查询参数部分
	const queryString = window.location.search;
	// 解析查询参数字符串，将其转换为对象
	const urlParams = new URLSearchParams(queryString);
	// 获取id参数的值
	const id = urlParams.get('id');
	// 选中的可见规则id
	let controlRuleId=-1;
	// 数据通道列表cas
	let baseCas=layui.layCascader(  {
		elem:`#BaseSel`,
		clearable: true, // 显示清除按钮
		// options:data,
		filterable: true,
		props: {
			multiple: false, // 允许多选
			// strictMode:true//开启严格模式
		},
	})
	// 文件上传批量注册 选择数据资源cas
	let resourceListCas=layui.layCascader(  {
		elem:`#resourceList`,
		clearable: true, // 显示清除按钮
		value:0,
		// options:data,
		filterable: true,
		placeholder:'上传文件批量注册数据资源后可以选择单个数据资源进行查看',
		props: {
			multiple: false, // 允许多选
			// strictMode:true//开启严格模式
		},
	})

	// 字段信息数组
	let contentDetailArr=[]
	// 原始数据列表cas
	// let rawCas=layui.layCascader(  {
	// 	elem:`#rawSel`,
	// 	clearable: true, // 显示清除按钮
	// 	// options:data,
	// 	filterable: true,
	// 	props: {
	// 		multiple: false, // 允许多选
	// 		// strictMode:true//开启严格模式
	// 	},
	// })

	$("#resourceList").next().addClass("disabledNone");
	//改变注册方式
	layui.form.on('radio(registerType)', function(data){
		if(data.value == 1){//文件注册
		$('.inputDiv input[type=text]').prop("disabled", true);
		$('.inputDiv input[type=text]').css("background-color", '#e9ecef');
		$('.inputDiv input[type=button]').prop("disabled", true);
		$('.inputDiv input[type=button]').css("background-color", '#e9ecef');
		$('.inputDiv  textarea').prop("disabled", true);
		$('.inputDiv textarea').css("background-color", '#e9ecef');
		  $("#uploadResourceFile").removeClass("disabledNone");
		  $("#dataUploadType").removeClass("disabledNone");
		  $("#saveAllForm").addClass("disabledNone");
		  $("#submitAllForm").addClass("disabledNone");
			$("#resourceList").next().removeClass("disabledNone");
			$('.inputDiv  textarea[name=indicator]').prop("disabled", true);
			$('.inputDiv  textarea[name=indicator]').css("background-color", '#e9ecef');
		}else{
		  $("#uploadResourceFile").addClass("disabledNone");
		  $("#resourceList").next().addClass("disabledNone");
		  $("#dataUploadType").addClass("disabledNone");
		  $("#saveAllForm").removeClass("disabledNone");
		  $("#submitAllForm").removeClass("disabledNone");
			$('.inputDiv input[type=text]').prop("disabled", false);
			$('.inputDiv input[type=text]').css("background-color", '#fff');
			$('.inputDiv input[type=button]').prop("disabled", false);
			$('.inputDiv input[type=button]').css("background-color", '#fff');
			$('.inputDiv  textarea').prop("disabled", false);
			$('.inputDiv textarea').css("background-color", '#fff');
			$('.inputDiv  textarea[name=indicator]').prop("disabled", true);
			$('.inputDiv  textarea[name=indicator]').css("background-color", '#e9ecef');
		}
	});
	// 监听原始数据资源的选择
	// rawCas.changeEvent(function (value,node){
	// 	console.log('value', value,node)
	// 	// 初始化详情表单
	// 	if (value){
	// 		$('#contentDetailText').css('display','none')
	// 		$('#fieldTable').parent().parent().addClass('fieldTable')
	// 		const fieldTable= table.render(fieldTableObj)
	// 		rawSonDetailReq(value).then(res=>{
	// 			const data=res.data;
	// 			contentDetailArr=data.datasourceFieldVoList;
	// 			console.log('contentDetailArr', contentDetailArr)
	// 			fieldTable.reload({data:data.datasourceFieldVoList})
	// 		})
	// 	}else {
	// 		$('[lay-id="fieldTable"]').hide();
	// 		$('#contentDetailText').css('display','block')
	// 		$('#fieldTable').parent().parent().removeClass('fieldTable')
	// 	}
	// })
	/**
	 * @description:请求原始数据子资源详情
	 * @return {Promise} 请求的结果
	 * @param id {String}
	 */
	function rawSonDetailReq(id){
		return new Promise((function (resolve, reject) {
			$.ajax({
       timeout:30000,
				url: window.Http + `/datasourceTable/${id}`,
				type: 'GET',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				success: function (res) {
					if (res.code===200){
						resolve(res)
					}else {
						layer.msg(res.msg)
						reject(new Error("请求失败")); // 失败时将错误传递给调用者
					}
				}
			})
		}))
	}

	// 字段信息表格属性
	// const fieldTableObj={
	// 	elem: '#fieldTable'
	// 	,height: '.layui-tab-item'
	// 	,data:[]
	// 	// ,page: true //开启分页
	// 	,cols: [[ //表头
	// 		{type:'numbers', title: '序号', width:60}
	// 		,{field: 'columnName', title: '名称', width:120}
	// 		,{field: 'columnNickName', title: '别名',templet:'#columnNickName'}
	// 		,{field: 'columnType', title: '类型'}
	// 		,{field: 'isUsing', title: '是否丢弃',templet: '#isUsing'}
	// 	]]
	// }

	//监听开启关闭按钮
		form.on('switch(isUsing)', function (obj) {
			let id = $(this).data("id");
			let isUsing = obj.elem.checked ? 1 : 0;
			console.log('id,isUsing', id,isUsing)
			const targetObject = contentDetailArr.find(obj => obj.id === id);

			if (targetObject) {
				targetObject.isUsing = isUsing;
			} else {
				layer.msg('该字段未找到')
			}
			console.log('contentDetailArr', contentDetailArr)
		});

	//监听输入框输入按钮
	// 	$('.fieldTable').on('blur', '.columnNickName', function () {
	// 		let id = Number($(this).attr('data-id')); //获取id
	// 		let value = $(this).val(); //获取值
	// 		console.log('id,value', id,value)
	// 		const targetObject = contentDetailArr.find(obj => obj.id === id);
	//
	// 		if (targetObject) {
	// 			targetObject.columnNickName = value;
	// 		} else {
	// 			layer.msg('该字段未找到')
	// 		}
	// 	});

	// 关键词列表cas
	let keywordCas=layui.layCascader(  {
		elem:`#keyWordSel`,
		clearable: true, // 显示清除按钮
		// options:data,
		filterable: true,
		props: {
			multiple: true, // 允许多选
			// strictMode:true//开启严格模式
		},
	})
	//分类列表cas
	let fieldTypeCas=layui.layCascader({
		elem:'#TypeSel',
		clearable:true,
		collapseTags: true,//折叠展示
		props:{
			multiple:true,
			lazy: true,
			lazyLoad:function (node,resolve){
				// console.log('node', node)
				const parentId=node?.data?.value
				$.ajax({
       				timeout:30000,
					url:window.Http+'/customer/fieldType/list',
					type: 'GET',
					headers: {
						'Authorization': "Bearer " +  sessionStorage.getItem('Token')
					},
					contentType: 'application/x-www-form-urlencoded',
					data: $.param({params:0,parentId:parentId,catalogTypes:"0,2"}),
					success:function (res){
						if (res.code===200){
							let nodes=res.data.map(function (item) {
								return {
									value: item.id,
									label: item.fieldName,
									leaf: !item.exitSon
								};
							})
							resolve(nodes)
						}else {
							layer.msg('获取目录失败')
						}
					}
				})
			}
		}
	})
	// // 可见规则集下拉框
	// let rulesCas=layui.layCascader(  {
	// 	elem:`#rulesSel`,
	// 	clearable: true, // 显示清除按钮
	// 	// options:data,
	// 	filterable:true,
	// 	props: {
	// 		multiple: false, // 允许多选
	// 		// strictMode:true//开启严格模式
	// 	},
	// })
	// 监听规则集的变化
	// 可见规则列表
	// let visibleRuleList;
	// rulesCas.changeEvent(function (value,node){
	// 	console.log('value', value)
	// 	const ruleSelected=visibleRuleList.filter(item=>item.id===value)
	// 	// console.log('ruleSelected', ruleSelected)
	// 	ruleTable.reload({data:ruleSelected})
	// })
	// 用户类型，用户级别列表（用于展示，索引为value，值为label）
	let userType=[]
	let userLevel=[]

	let visibleSpeUserCas=layui.layCascader({//单选
		elem:`#visibleSpeUser`,
		clearable: true, // 显示清除按钮
		disabled:true,
		props: {
			multiple: true, // 允许多选
			// strictMode:true//开启严格模式
		},
	})
	visibleSpeUserCas.changeEvent(function (value,node){
		console.log('用户变化',value,typeof value)
	})
	baseListReq().then(res=>{
		baseCas.setOptions(dataFormat(res.rows,'id','resourceName'))
	})
	// rawListReq().then(res=>{
	// 	// rawCas.setOptions(dataFormat(res.data,'id','dbName','childrenList'))
	// 	rawCas.setOptions(rawCasConversion(res.data))
	// 	const data=rawCasConversion(res.data)
	// 	console.log('data', data)
	// })
	// 关键字赋值
	keywordListReq().then(res=>{
		// keywordCas.setOptions(dataFormat(res.data.keywordList,'id','resourceName'))
		const optArr=res.data.map((item,index)=>{
			return {value:index,label:item}
		})
		keywordCas.setOptions(optArr)
	})
	// 可见规则列表
	let visibleRuleList=[];
	
	// 获取数据资源详情
	if (id){
		$.ajax({
       timeout:30000,
			url: window.Http + `/datasourceContent/info/${id}`,
			type: 'GET',
			headers: {
				'Authorization': "Bearer " + sessionStorage.getItem('Token')
			},
			success: function (res) {
				if (res.code === 200) {
					const datasource=res.data;
					form.val('SourceInfoForm',datasource);
					$('#dataResourceAddOrEdit').html(`数据资源修改<p>Data Resource Edit</p>`)
					// 规则赋值
					const visibleRuleData=datasource.controlRule;
					getDictData('user_level').then(res=>{
						visibleUserLevelCas.setOptions(dataFormat(res.data, 'dictValue', 'dictLabel'));
						visibleFormValue(visibleRuleData)
						res.data.forEach(function (item) {
							userLevel[Number(item.dictValue)] = item.dictLabel;
						});
					})
					getDictData('user_type').then(res=>{
						visibleUserTypeCas.setOptions(dataFormat(res.data, 'dictValue', 'dictLabel'));
						visibleFormValue(visibleRuleData)
						res.data.forEach(function (item) {
							userType[item.dictValue] = item.dictLabel;
						});
						})
					// 数据通道赋值
					baseListReq().then(res=>{
						baseCas.setOptions(dataFormat(res.rows,'id','resourceName'))
						baseCas.setValue(datasource.sourceId)
					})
					// // TODO 原始数据赋值
					// rawListReq().then(res=>{
					// 	rawCas.setOptions(rawCasConversion(res.data))
					// 	// rawCas.setOptions(dataFormat(res.data,'id','dbName'))
					// 	rawCas.setValue()
					// })
					// 关键字赋值
					keywordListReq().then(res=>{
						// keywordCas.setOptions(dataFormat(res.data.keywordList,'id','resourceName'))
						const optArr=res.data.map((item,index)=>{
							return {value:index,label:item}
						})
						keywordCas.setOptions(optArr)
						keywordCas.setValue()
					})
					// 分类赋值
					fieldTypeCas.setValue(datasource.typeIdList)
					// 图标展示
					$('#dataSourceIconUrl').attr("src",datasource.iconUrl)
				
					// 人工注册数据通道 提交按钮
					$('#submitAllForm').on('click',function (){
						const data=form.val('SourceInfoForm');
						data.status=2;
						data.controlRuleId=controlRuleId;
						data.keywordList=keywordCas.getCheckedNodes().map(item=>item.data.label)
						data.iconUrl=url
						data.typeIdList=fieldTypeCas.getCheckedValues();
						data.contentDetail=JSON.stringify(contentDetailArr)
						// const item=	rawCas.getCheckedNodes()
						// data.originSourceDependency=JSON.stringify({
						// 			originDatasourceContentId:item.data.value,
						// 			originDatasourceContentName:item.data.label
						// 		}
						// )
						data.id=id;
						console.log('data', data)
						$.ajax({
       timeout:30000,
							url: window.Http + "/datasourceContent/update",
							type: 'PUT',
							headers: {
								'Authorization': "Bearer " + sessionStorage.getItem('Token')
							},
							data:JSON.stringify(data),
							contentType:"application/json",
							success:function (res){
								if (res.code===200){
									layer.msg('修改成功')
								}else {
									layer.msg(res.msg)
								}
							}
						})

					})
					// 保存
					$('#saveAllForm').on('click',function (){
						const data=form.val('SourceInfoForm');
						data.status=-1;
						data.controlRuleId=controlRuleId;
						data.keywordList=	data.keywordList=keywordCas.getCheckedNodes().map(item=>item.data.label)
						data.iconUrl=url
						data.typeIdList=fieldTypeCas.getCheckedValues();
						data.contentDetail=JSON.stringify(contentDetailArr)
						// const item=	rawCas.getCheckedNodes()
						// data.originSourceDependency=JSON.stringify({
						// 			originDatasourceContentId:item.data.value,
						// 			originDatasourceContentName:item.data.label
						// 		}
						// )
						console.log('data', data)
						$.ajax({
       timeout:30000,
							url: window.Http + "/datasourceContent/create",
							type: 'POST',
							headers: {
								'Authorization': "Bearer " + sessionStorage.getItem('Token')
							},
							data:JSON.stringify(data),
							contentType:"application/json",
							success:function (res){
								if (res.code===200){
									layer.msg('保存成功')
								}else {
									layer.msg(res.msg)
								}
							}
						})

					})
				} else {
					layer.msg(res.msg)
				}
			}
		})
	}else {//新增
		// 人工注册数据资源 提交按钮
		$('#submitAllForm').on('click',function (){
			const data=form.val('SourceInfoForm');
			data.status=2;
			data.controlRuleId=controlRuleId;
			data.keywordList=	data.keywordList=keywordCas.getCheckedNodes().map(item=>item.data.label)
			data.iconUrl=url
			data.typeIdList=fieldTypeCas.getCheckedValues();
			data.contentDetail=JSON.stringify(contentDetailArr)
			// const item=	rawCas.getCheckedNodes()
			// data.originSourceDependency=JSON.stringify({
			// 			originDatasourceContentId:item.data.value,
			// 			originDatasourceContentName:item.data.label
			// 		}
			// )
			console.log('data', data)
			$.ajax({
       timeout:30000,
				url: window.Http + "/datasourceContent/create",
				type: 'POST',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				data:JSON.stringify(data),
				contentType:"application/json",
				success:function (res){
					if (res.code===200){
						layer.msg('注册成功')
					}else {
						layer.msg(res.msg)
					}
				}
			})

		})
		// 保存
		$('#saveAllForm').on('click',function (){
			const data=form.val('SourceInfoForm');
			data.status=-1;
			data.controlRuleId=controlRuleId;
			data.keywordList=	data.keywordList=keywordCas.getCheckedNodes().map(item=>item.data.label)
			data.iconUrl=url
			data.typeIdList=fieldTypeCas.getCheckedValues();
			data.contentDetail=JSON.stringify(contentDetailArr)
			// const item=	rawCas.getCheckedNodes()
			// data.originSourceDependency=JSON.stringify({
			// 			originDatasourceContentId:item.data.value,
			// 			originDatasourceContentName:item.data.label
			// 		}
			// )
			console.log('data', data)
			$.ajax({
       timeout:30000,
				url: window.Http + "/datasourceContent/create",
				type: 'POST',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				data:JSON.stringify(data),
				contentType:"application/json",
				success:function (res){
					if (res.code===200){
						layer.msg('保存成功')
					}else {
						layer.msg(res.msg)
					}
				}
			})

		})
	}
	// 请求用户级别，用户类型
	function getDictData(dictType) {
			return new Promise((function (resolve, reject){
			 $.ajax({
       timeout:30000,
				url: window.Http + "/system/dict/data/getDictList",
				type: 'GET',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				data: {
					dictType: dictType
				},
				 success: function (res) {
					 if (res.code === 200) {
						 // keywordCas.setOptions(dataFormat(res.data.keywordList,'id','resourceName'))
						 resolve(res)
					 } else {
						 layer.msg('获取用户级别或用户类型失败')
						 reject(new Error("请求失败")); // 失败时将错误传递给调用者
					 }
				 }
			});
		}))
		}
	function visibleRuleListReq(){
		return new Promise((function (resolve, reject){
			// 获取可见规则列表
			$.ajax({
       timeout:30000,
				url: window.Http + "/system/control/list/all",
				type: 'GET',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				success:function (res){
					if (res.code===200){
						// rulesCas.setOptions(dataFormat(res.data,'id','systemControlName'))
						resolve(res)

					}else {
						layer.msg('获取可见规则失败')
						reject(new Error("请求失败")); // 失败时将错误传递给调用者
					}
				}
			})
		}))
	}

	function baseListReq(){
		return new Promise(function (resolve, reject){
			// 获取数据通道列表
			$.ajax({
       timeout:30000,
				url: window.Http + "/datasourceBase/list",
				type: 'GET',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				data:{ownUserId:sessionStorage.getItem('UserId'),status:0},
				success:function (res){
					if (res.code===200){

						resolve(res)
					}else {
						layer.msg('获取数据通道列表失败')
						reject(new Error("请求失败")); // 失败时将错误传递给调用者
					}
				}
			})
		})
	}

	// 请求关键字
	function keywordListReq() {
		return new Promise(function (resolve, reject) {
			$.ajax({
       timeout:30000,
				url: window.Http + "/system/field/keyword",
				type: 'GET',
				headers: {
					'Authorization': "Bearer " + sessionStorage.getItem('Token')
				},
				data:{params:0,keyword:""},
				success:function (res){
					if (res.code===200){

						resolve(res)
					}else {
						layer.msg('获取数据通道列表失败')
						reject(new Error('错误'))
					}
				}
			})
		})
	}
	// 请求原始资源下拉列表
	// function rawListReq() {
	// 	return new Promise(function (resolve, reject) {
	// 		$.ajax({
    //    timeout:30000,
	// 			url: window.Http + `/datasourceDb/list/all`,
	// 			type:'get' ,
	// 			headers: {
	// 				'Authorization': "Bearer " + sessionStorage.getItem('Token')
	// 			},
	// 			success: function (res) {
	// 				if (res.code === 200) {
	// 					resolve(res)
	// 				} else {
	// 					layer.msg(res.msg)
	// 					reject(new Error('错误'))
	// 				}
	// 			}
	// 		})
	// 	})
	// }
	const visibleRuleTable= table.render({
		elem: '#visiRuleTable'
		,height:'.control'
		,data:[]
		,page: false //开启分页
		,cols: [[ //表头
			{  title: '选择规则', width: 150,templet:function (d){
					return `
						<a class="layui-btn layui-btn-danger layui-btn-xs text-white" lay-event="select">选择</a>
                `
				}},
			{ title: '序号', width:60,type:'numbers', }
			,{field: 'systemControlName', title: '规则名',}
			// ,{field: 'isVisible', title: '可见性'}
			// ,{field: 'speUserList', title: '指定用户', width:'15%',templet: function (d){
			// 		if (d.speUserList&&d.speUserList.length>0){
			// 			const speUserNameList= d.speUserList.map(item=>item.speUserName).join(',')
			// 			return `<span>${speUserNameList}</span>`
			// 		}else {
			// 			return  `<span>暂无</span>`
			// 		}
			// 	}}
			// ,{field: 'speUserTypeList', title: '用户类型', width: '15%',templet:function (d){
			// 		if (userType&&userType.length>0&&d.speUserTypeList&&d.speUserTypeList.length){
			// 			const speUserTypeNameList=d.speUserTypeList.map(item => userType[item]).join(',');
			// 			return `<span>${speUserTypeNameList}</span>`
			// 		}
			// 		else {
			// 			return  `<span>暂无</span>`
			// 		}
			// 	}
			// }
			// ,{field: 'userLevel', title: '用户级别', width: '15%',templet:function (d){
			// 		if (userLevel&&userLevel.length>0&&d.userLevel){
			// 			const userLevelName=userLevel[d.userLevel];
			// 			return `<span>${userLevelName}</span>`
			// 		}else {
			// 			return  `<span>暂无</span>`
			// 		}
			// 	}}
			,{field: 'remark', title: '备注',}

		]]
	})
	let visibleUserTypeCas,visibleUserLevelCas;
	//显示或隐藏更多设置
	var setMoreState = false;
	$("#butnMoreSet").click(function(){
		if(setMoreState){
			$(this).text("更多设置");
			$(".MoreSet").addClass("disabledNone");
		}else{
			$(this).text("收起设置");
			$(".MoreSet").removeClass("disabledNone");
			console.log('打开了', setMoreState)
			// 可见规则下拉框
			 visibleUserTypeCas=layui.layCascader({
				elem:`#visibleUserType`,
				clearable: true, // 显示清除按钮
				// options:data,
				disabled:true,
				props: {
					multiple: true, // 允许多选
					// strictMode:true//开启严格模式
				},
				// value:selectedData
			})
			 visibleUserLevelCas=layui.layCascader(  {
				elem:`#visibleUserLevel`,
				clearable: true, // 显示清除按钮
				// options:data,
				disabled:true,
				props: {
					multiple: false, // 允许多选
					// strictMode:true//开启严格模式
				},
			})
			//可见 表格实例
			visibleRuleListReq().then(res=>{
				visibleRuleList=res.data;
				visibleRuleTable.reload({data:res.data})
			})
			getDictData('user_level').then(res=>{
				visibleUserLevelCas.setOptions(dataFormat(res.data, 'dictValue', 'dictLabel'));

			})
			getDictData('user_type').then(res=>{
				visibleUserTypeCas.setOptions(dataFormat(res.data, 'dictValue', 'dictLabel'));

			})

			visibleUserLevelCas.changeEvent(function (value,node){
				console.log('级别的变化',value)
			})

			visibleUserTypeCas.changeEvent(function (value,node){
				console.log('类型的变化：',value,node)
			})

			table.on('tool(visiRuleTableFilter)',function (obj){
				const data=obj.data;
				if (obj.event==='select'){
					visibleFormValue(data)
					console.log('select data',  data)
					controlRuleId=data.id;
				}
			})
		}
		setMoreState = !setMoreState;
	})
	// // 打开了更多设置
	// if(setMoreState){
	// }

	// 文件上传批量注册数据资源列表
	let datasourceList=[]

	// 文件注册
	layui.use(['upload','form'], function() {
		//执行实例
		const uploadInst = upload.render({
			elem: '#uploadResourceFile' //绑定元素
			, url: window.Http + '/datasourceContent/upload' //上传接口
			,headers: {
				'Authorization': "Bearer " + sessionStorage.getItem('Token')
			}
			,accept:'file'
			// ,auto: false //选择文件后不自动上传
			, done: function (res) {
				//上传完毕回调
				if (res.code === 200) {
					layer.msg('上传成功')
					//url=res.url;
					datasourceList=res.data;
					const optArr=datasourceList.map((item,index)=>{
						return {value:index+1,label:item.contentName}
					})
					resourceListCas.setOptions(optArr)
					resourceListCas.setValue(1)
					// resourceListCas.setValue(0)
					const datasource=res.data[0];
					form.val('SourceInfoForm',datasource);
					// 数据通道赋值
					baseListReq().then(res=>{
						baseCas.setOptions(dataFormat(res.rows,'id','resourceName'))
						baseCas.setValue(datasource.sourceId)
					})
				} else {
					layer.msg(res.msg)
				}
			}
		});
	})
	resourceListCas.changeEvent(function (value){
		console.log('value', value,typeof value)
		const data=datasourceList[value-1]
		form.val('SourceInfoForm',data);
	})
	// 事件处理部分

	//上传图标文件
	// let IconUrl = "";
	const inputButton = document.querySelector("#dataSourceIconButton")
	const inputFile = document.querySelector("#dataSourceIcon")
	inputButton.onclick = (event) => {
		inputFile.click();
	}
	inputFile.onchange = (event) => {
		const files = event.target.files;
		console.log(files);
		for (let i = 0; i < event.target.files.length; i++) {
			let file = event.target.files[i];
			uploadFile(file).then(res => {
				url = res.url;
				$("#dataSourceIconUrl").attr("src", url);
			});
		}
	};


	// 功能函数部分


	// 数据转换成级联列表需要的样式
	// data:原始数组，value:绑定的值（id），label：标签显示值，返回正确格式数组
	/**
	 * @description:函数描述 数据转换成级联列表需要的样式
	 * @return 返回值
	 * @param obj
	 * @param propertyMap
	 */

	function renameProperties(obj,propertyMap){
		for (let key in obj) {
			if (obj[key] && typeof obj[key] === 'object') {
				renameProperties(obj[key], propertyMap);
			}
			if (propertyMap[key]) {
				obj[propertyMap[key]] = obj[key];
				delete obj[key];
			}
		}
	}
	/**
	 * @description:函数描述 把数组转成级联选择器需要的格式
	 * @return {Array} data 返回的数组
	 * @param data {Array} 需要转换的数组
	 * @param value {String}
	 * @param label {String}
	 * @param children {String}
	 */
	function dataFormat(data,value,label,children=null){
		const propertyMap={}
		propertyMap[value]='value'
		propertyMap[label]='label'
		if (children){
		propertyMap[children]='children'
		}
		data.forEach(item=>renameProperties(item,propertyMap))
		return data
	}
	/**
	 * @description:函数描述把原始数据资源列表转成级联选择器需要的格式两级
	 * @return {Array} 转换之后的格式
	 * @param data {Array} 原始数据资源列表
	 */

	function rawCasConversion(originalArray){
		const transformedArray = originalArray.map(item => {
			const newItem = {
				label: item.dbName + " (" + item.dbNickName + ")",
				value: item.id,
				children: item.datasourceTableVoList.map(tableItem => ({
					label: tableItem.tableName,
					value: tableItem.id
				}))
			};
			return newItem;
		});
		return transformedArray
	}
	
	// 可见的表单赋值
	function visibleFormValue(data){
		let single=null;
		let collection=null
		console.log('data', data)
		if (!data){
			form.val('visibleNameForm',{
				"systemControlName":null,
				"visibleRuleRemark":null
			})
			form.val('visibleForm',{
				"mode":1,
				"userLevelMethod":0,
				"userLevelValue":0,
				"isVisible":0
			})
			visibleUserLevelCas.setValue(0)
			visibleUserTypeCas.setValue([]);
			visibleSpeUserCas.setValue([]);
		}else {
			visibleUserTypeCas.setValue([]);
			console.log('data.speUserList', data.speUserList)
			console.log('data.speUserTypeList', data.speUserTypeList)
			visibleSpeUserCas.setOptions(dataFormat(data.speUserList,'speUserId','speUserName'))
			
			single=JSON.parse(data.single);
			collection=JSON.parse(data.collection)
			form.val('visibleNameForm',{
				"systemControlName":data.systemControlName||null,
				"remark":data.remark||null
			})
			form.val('visibleForm',{
				"mode":data.ruleMode||1,
				"userLevelMethod":single[0].method||0,
				"userLevelValue":single[0].value||0,
				"isVisible":data.isVisible
			})
			// const userTypeSet = collection.find(item => item.class === 'userType').set;
			// const speUserSet = collection.find(item => item.class === 'speUser').set;
			if (data.speUserTypeList&&data.speUserTypeList.length>0){
			const typeIds=data.speUserTypeList.map(item=>item.toString())
				console.log('typeIds', typeIds)
			visibleUserTypeCas.setValue(typeIds);
			}
			const speUserIds=data.speUserList.map(item=>item.value)
			console.log('speUserIds', speUserIds)
			visibleSpeUserCas.setValue(speUserIds);
			visibleUserLevelCas.setValue(single[0].value)
		}
	}
	//前往原始数据资源
	$("#natoOldDataResources").click(function(){
		window.location.href = "./mySpace.html";
	})
})
